package com.bilibili.service;

import com.bilibili.entity.*;
import com.bilibili.vo.CollectionVo;
import com.bilibili.vo.HistoryVo;
import com.bilibili.vo.PersonalData;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface PersonalService {
    /**
     * 根据用户名id，查找个人中心信息
     *
     * @param userId 用户id
     * @return 个人中心信息
     */
    PersonalData getPersonalByuserId(Integer userId);

    /**
     * 根据用户名id，查找个人详细信息
     *
     * @param userId 用户id
     * @return 个人详细信息
     */
    UserInfo getUserInfoByuserId(Integer userId);

    /**
     * 添加用户信息
     *
     * @param userInfo 用户信息
     * @return 是否添加成功
     */
    boolean addUserInfo(UserInfo userInfo);


    /**
     * 更改用户信息
     *
     * @param userInfo 用户信息  userId 用户id
     * @return
     */
    boolean modifyUserInfo(UserInfo userInfo,Integer userId);

    /**
     * 添加会员积分
     *
     * @param
     * @return
     */
    boolean addVipPoints(Integer userId,Integer balance);


    /**
     * 根据用户名id添加经验值
     *
     * @param
     * @return 是否添加成功
     */
    boolean addExp(Integer userId,Integer exp);


    /**
     * 根据用户名id添加硬币
     *
     * @param
     * @return 是否添加成功
     */
    boolean addCoin(Integer userId,Integer coin);

    /**
     * 根据用户名id获取我的空间数据
     *
     * @param userId 用户id
     * @return
     */
    Space getSpaceByuserId(Integer userId);


    /**
     * 获得历史记录
     *
     * @param
     * @return
     */
    List<Video> getHistoryVideos(Integer[] tempHistoryVedioVids, User loginUser);


    /**
     * 获取硬币记录
     * @param  userId  用户id
     * @return
     */
    List<MyCoin>  getAllCoinRecord(Integer userId);



    /**
     * 判断是否获得每日奖励
     * @param userId
     * @return
     */
    boolean isAchieveWatchAward(Integer userId);

    /**
     * 获得投币奖励经验值
     * @param userId
     * @return
     */
    int getCoinAward(Integer userId);


    /**
     * 获得收藏记录
     *
     * @return
     */
    List<CollectionVo> getCollectionRecord(Integer userId);

    /**
     * 获得历史记录
     *
     * @return
     */
    List<HistoryVo> getHistoryRecord(Integer userId);




}
